<?php

namespace app\admin\command;

use think\console\Command;
use think\console\Input;
use think\console\Output;
use app\common\model\Pay\Pay as PayModel;

class ClosePay extends Command
{
    protected $PayModel = null;

    protected function initialize(Input $input, Output $output)
    {
        $this->PayModel = new PayModel();
    }

    // 配置指令
    protected function configure()
    {
        // 设置指令名称以及指令描述
        $this->setName('ClosePay')->setDescription('每三分钟把未支付的支付订单状态设置已关闭');
    }

    // 指令执行内容
    protected function execute(Input $input, Output $output)
    {
        // 查找未支付的订单
        $PayData = $this->PayModel->where(['status' => 0])->select();

        if (!$PayData) {
            $output->info('暂无未支付的支付订单');

            return false;
        }

        // 存放未支付的支付订单数据
        $data = [];

        foreach ($PayData as $item) {
            // 创建订单时间 + 3分钟时间
            $endtime = (30 * 3) + $item['createtime'];

            if ($endtime < time()) {
                $data[] = [
                    'id' => $item['id'],
                    'status' => 2
                ];
            }
        }

        if (empty($data)) {
            $output->info('暂无超过三分钟的未支付的支付订单');

            return false;
        }

        // 批量更新 静态方法调用
        $result = $this->PayModel->isUpdate(true)->saveAll($data);

        if ($result === false) {
            $output->error('更新支付订单状态失败');
        } else {
            $output->info('更新支付订单状态成功');
        }
    }
}
